<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0085)https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510 -->
<html xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/WebPage"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta http-equiv="X-UA-Compatible" content="chrome=1">
<script type="text/javascript">/* Copyright 2008 Google. */ (function() { (function(){function e(g){this.t={};this.tick=function(h,k,f){this.t[h]=[void 0!=f?f:(new Date).getTime(),k];if(void 0==f)try{window.console.timeStamp("CSI/"+h)}catch(m){}};this.tick("start",null,g)}var a;if(window.performance)var d=(a=window.performance.timing)&&a.responseStart;var l=0<d?new e(d):new e;window.jstiming={Timer:e,load:l};if(a){var b=a.navigationStart;0<b&&d>=b&&(window.jstiming.srt=d-b)}if(a){var c=window.jstiming.load;0<b&&d>=b&&(c.tick("_wtsrt",void 0,b),c.tick("wtsrt_","_wtsrt",
d),c.tick("tbsd_","wtsrt_"))}try{a=null,window.chrome&&window.chrome.csi&&(a=Math.floor(window.chrome.csi().pageT),c&&0<b&&(c.tick("_tbnd",void 0,window.chrome.csi().startE),c.tick("tbnd_","_tbnd",b))),null==a&&window.gtbExternal&&(a=window.gtbExternal.pageT()),null==a&&window.external&&(a=window.external.pageT,c&&0<b&&(c.tick("_tbnd",void 0,window.external.startE),c.tick("tbnd_","_tbnd",b))),a&&(window.jstiming.pt=a)}catch(g){}})(); })()
</script>
<link rel="shortcut icon" type="image/x-icon" href="https://www.google.com/images/icons/product/sites-16.ico">
<link rel="apple-touch-icon" href="https://ssl.gstatic.com/sites/p/fb83f7/system/app/images/apple-touch-icon.png" type="image/png">
<script type="text/javascript">/* Copyright 2008 Google. */ (function() { function d(a){return document.getElementById(a)}window.byId=d;function g(a){return a.replace(/^\s+|\s+$/g,"")}window.trim=g;var h=[],k=0;window.JOT_addListener=function(a,b,c){var f=new String(k++);a={eventName:a,handler:b,compId:c,key:f};h.push(a);return f};window.JOT_removeListenerByKey=function(a){for(var b=0;b<h.length;b++)if(h[b].key==a){h.splice(b,1);break}};window.JOT_removeAllListenersForName=function(a){for(var b=0;b<h.length;b++)h[b].eventName==a&&h.splice(b,1)};
window.JOT_postEvent=function(a,b,c){var f={eventName:a,eventSrc:b||{},payload:c||{}};if(window.JOT_fullyLoaded)for(b=h.length,c=0;c<b&&c<h.length;c++){var e=h[c];e&&e.eventName==a&&(f.listenerCompId=e.compId||"",(e="function"==typeof e.handler?e.handler:window[e.handler])&&e(f))}else window.JOT_delayedEvents.push({eventName:a,eventSrc:b,payload:c})};window.JOT_delayedEvents=[];window.JOT_fullyLoaded=!1;
window.JOT_formatRelativeToNow=function(a,b){a=((new Date).getTime()-a)/6E4;if(1440<=a||0>a)return null;var c=0;60<=a&&(a/=60,c=2);2<=a&&c++;return b?window.JOT_siteRelTimeStrs[c].replace("__duration__",Math.floor(a)):window.JOT_userRelTimeStrs[c].replace("__duration__",Math.floor(a))}; })()
</script>
<script>

  

  var breadcrumbs = [{"path":"/site/ericmklaus/projects-1","deleted":false,"title":"Projects","dir":"ltr"},{"path":"/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510","deleted":false,"title":"A Flash Programmer for the CC2510","dir":"ltr"}];
  var JOT_clearDotPath = 'https://ssl.gstatic.com/sites/p/fb83f7/system/app/images/cleardot.gif';

  
  var JOT_userRelTimeStrs = ["a minute ago","__duration__ minutes ago","an hour ago","__duration__ hours ago"];

  
  

  

  var webspace = {"gvizGstaticVersion":"current","enableAnalytics":false,"pageSharingId":"jotspot_page","codeembeds":{"outerIframeSrc":"https://www.gstatic.com/jotspot/embeds/code/0f08d42392f2000e7e3f3daf5b427a43/outer_iframe.html","innerIframeSrc":"https://27379092-jotspot-embeds.googleusercontent.com/code/8d87fa64604b2a11fae2ed06104c58d3/inner_iframe.html"},"enableUniversalAnalytics":false,"sharingPolicy":"OPENED","siteTitle":"Eric M. Klaus","jot2atari":{"eligibility":"ineligible"},"onepickUrl":"https://docs.google.com/picker","adsensePublisherId":null,"features":{"moreMobileStyleImprovements":null,"subscriptionDataMigrationInProgress":false,"plusBadge":false},"isPublic":true,"newSitesBaseUrl":"https://sites.google.com","isConsumer":true,"serverFlags":{"jot2AtariLearnMoreUrl":"https://support.google.com/sites/answer/7035197"},"domainAnalyticsAccountId":"","plusPageId":"","signInUrl":"https://accounts.google.com/AccountChooser?continue\u003dhttps://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510\u0026service\u003djotspot","analyticsAccountId":"","scottyUrl":"/_/upload","homePath":"/","siteNoticeUrlEnabled":null,"plusPageUrl":"","adsensePromoClickedOrSiteIneligible":true,"csiReportUri":"https://gg.google.com/csi","sharingId":"jotspot","termsUrl":"//www.google.com/intl/en/policies/terms/","gvizVersion":1,"editorResources":{"sitelayout":["https://ssl.gstatic.com/sites/p/fb83f7/system/app/css/sitelayouteditor.css"],"text":["https://ssl.gstatic.com/sites/p/fb83f7/system/js/codemirror.js","https://ssl.gstatic.com/sites/p/fb83f7/system/app/css/codemirror_css.css","https://ssl.gstatic.com/sites/p/fb83f7/system/js/trog_edit__en.js","https://ssl.gstatic.com/sites/p/fb83f7/system/app/css/trogedit.css","/site/ericmklaus/_/rsrc/1570087315000/system/app/css/editor.css","https://ssl.gstatic.com/sites/p/fb83f7/system/app/css/codeeditor.css","/site/ericmklaus/_/rsrc/1570087315000/system/app/css/camelot/editor-jfk.css"]},"sharingUrlPrefix":"/_/sharing","isAdsenseEnabled":true,"domain":"defaultdomain","baseUri":"/site/ericmklaus","name":"ericmklaus","siteTemplateId":false,"siteNoticeRevision":null,"siteNoticeUrlAddress":null,"siteNoticeMessage":null,"page":{"isRtlLocale":false,"canDeleteWebspace":false,"isPageDraft":null,"parentPath":"/projects-1","parentWuid":"wuid:gx:7fc2bd5c03669b51","siteLocale":"en","timeZone":"America/Los_Angeles","type":"text","title":"A Flash Programmer for the CC2510","locale":"en","wuid":"wuid:gx:29845d92268eb0a","revision":7,"path":"/projects-1/a-flash-programmer-for-the-cc2510","isSiteRtlLocale":false,"pageInheritsPermissions":null,"name":"a-flash-programmer-for-the-cc2510","canChangePath":true,"state":"","properties":{},"bidiEnabled":false,"currentTemplate":{"path":"/projects-1/ewplus-controller-programming","title":"EWPlus Controller Programming"}},"canPublishScriptToAnyone":true,"user":{"keyboardShortcuts":true,"sessionIndex":0,"onePickToken":"000770F203E6B3AEFFAB6C4CF7D3FDD12345DB4F6DEC4C4C56::1571161716645","guest_":false,"displayNameOrEmail":"Andrei T\u0103tar","userName":"tatarandrei","uid":"06005930654708758868","domainUser":false,"renderMobile":false,"domain":null,"namespace":"","hasWriteAccess":false,"namespaceUser":false,"primaryEmail":"tatarandrei@gmail.com","hasAdminAccess":false},"gadgets":{"baseUri":"/site/ericmklaus/system/app/pages/gadgets"}};
  webspace.page.breadcrumbs = breadcrumbs;

  
  var JOT_siteRelTimeStrs = ["a minute ago","__duration__ minutes ago","an hour ago","__duration__ hours ago"];

</script>
<script type="text/javascript">
                window.jstiming.load.tick('scl');
              </script>
<meta name="title" content="A Flash Programmer for the CC2510 - Eric M. Klaus">
<meta itemprop="name" content="A Flash Programmer for the CC2510 - Eric M. Klaus">
<meta property="og:title" content="A Flash Programmer for the CC2510 - Eric M. Klaus">
<style type="text/css">
</style>
<link rel="stylesheet" type="text/css" href="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/standard-css-leatherpanel-ltr-ltr.css">
<link rel="stylesheet" type="text/css" href="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/overlay.css">
<link rel="stylesheet" type="text/css" href="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/allthemes-view.css">
<!--[if IE]>
          <link rel="stylesheet" type="text/css" href="/site/ericmklaus/system/app/css/camelot/allthemes%2die.css" />
        <![endif]-->
<title>A Flash Programmer for the CC2510 - Eric M. Klaus</title>
<meta itemprop="image" content="https://sites.google.com/site/ericmklaus/_/rsrc/1528312443279/projects-1/a-flash-programmer-for-the-cc2510/CC2510EM_1.jpg?height=178&amp;width=200">
<meta property="og:image" content="https://sites.google.com/site/ericmklaus/_/rsrc/1528312443279/projects-1/a-flash-programmer-for-the-cc2510/CC2510EM_1.jpg?height=178&amp;width=200">
<script type="text/javascript">
                window.jstiming.load.tick('cl');
              </script>
<script src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/ga.js.download"></script></head>
<body xmlns="http://www.google.com/ns/jotspot" id="body" class=" en            ">
<div id="sites-page-toolbar" class="sites-header-divider">
<div xmlns="http://www.w3.org/1999/xhtml" id="sites-status" class="sites-status" style="display:none;"><div id="sites-notice" class="sites-notice" role="status" aria-live="assertive"> </div></div>
</div>
<div id="sites-chrome-everything-scrollbar">
<div id="sites-chrome-everything" class="">
<div id="sites-chrome-page-wrapper" style="direction: ltr">
<div id="sites-chrome-page-wrapper-inside">
<div xmlns="http://www.w3.org/1999/xhtml" id="sites-chrome-header-wrapper" style="height:auto;">
<table id="sites-chrome-header" class="sites-layout-hbox" cellspacing="0" style="height:auto;">
<tbody><tr class="sites-header-primary-row" id="sites-chrome-userheader">
<td id="sites-header-title" class="" role="banner"><div class="sites-header-cell-buffer-wrapper"><a href="https://sites.google.com/site/ericmklaus/" id="sites-chrome-userheader-logo"><img id="logo-img-id" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/customLogo.gif" alt="Eric M. Klaus" class="sites-logo  "></a><h2><a href="https://sites.google.com/site/ericmklaus/" dir="ltr" id="sites-chrome-userheader-title">Eric M. Klaus</a></h2></div></td><td class="sites-layout-searchbox  "><div class="sites-header-cell-buffer-wrapper"><form id="sites-searchbox-form" action="https://sites.google.com/site/ericmklaus/system/app/pages/search" role="search"><input type="hidden" id="sites-searchbox-scope" name="scope" value="search-site"><input type="text" id="jot-ui-searchInput" name="q" size="20" value="" aria-label="Search this site"><div id="sites-searchbox-button-set" class="goog-inline-block"><div role="button" id="sites-searchbox-search-button" class="goog-inline-block jfk-button jfk-button-standard" tabindex="0" style="user-select: none;">Search this site</div></div></form></div></td>
</tr>
<tr class="sites-header-secondary-row" id="sites-chrome-horizontal-nav">
<td colspan="2" id="sites-chrome-header-horizontal-nav-container" role="navigation">
<div class="sites-header-nav"><ul class="sites-header-nav-container-tabs"><li class="unselected"><a class="sites-navigation-link unselected" href="https://sites.google.com/site/ericmklaus/home">Home</a></li><li class="unselected"><a class="sites-navigation-link unselected" href="https://sites.google.com/site/ericmklaus/projects-1">Projects</a></li><li class="unselected"><a class="sites-navigation-link unselected" href="https://sites.google.com/site/ericmklaus/teaching">Teaching</a></li><li class="unselected"><a class="sites-navigation-link unselected" href="https://sites.google.com/site/ericmklaus/misc">Misc</a></li><li class="unselected"><a class="sites-navigation-link unselected" href="https://sites.google.com/site/ericmklaus/my-pictures">My Pictures</a></li><li class="unselected"><a class="sites-navigation-link unselected" href="https://sites.google.com/site/ericmklaus/contact">Contact</a></li></ul><div style="clear: both;"></div></div>
</td>
</tr>
</tbody></table>
</div>
<div id="sites-chrome-main-wrapper">
<div id="sites-chrome-main-wrapper-inside">
<table id="sites-chrome-main" class="sites-layout-hbox" cellspacing="0" cellpadding="{scmCellpadding}" border="0">
<tbody><tr>
<td id="sites-chrome-sidebar-left" class="sites-layout-sidebar-left initial" style="width:150px">
<div xmlns="http://www.w3.org/1999/xhtml" id="COMP_3350227752234787" class="sites-embed" role="navigation"><h4 class="sites-embed-title">Projects</h4><div class="sites-embed-content sites-sidebar-nav"><ul role="navigation" jotid="navList" class="has-expander"><li class="topLevel nav-first parent" wuid="gx:7fc2bd5c03669b51"><div dir="ltr" style="padding-left: 0px;"><div class="expander"></div><a href="https://sites.google.com/site/ericmklaus/projects-1" jotid="wuid:gx:7fc2bd5c03669b51" class="sites-navigation-link topLevel">Projects</a></div><ul role="navigation" class="has-expander"><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/my-3d-printer-journey" jotid="wuid:gx:50e965e0fd956bf5" class="sites-navigation-link">My 3D Printer Journey</a></div></li><li class=""><div class="current-bg" jotid="wuid:gx:29845d92268eb0a" dir="ltr" style="padding-left: 38px;">A Flash Programmer for the CC2510</div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/ewplus-controller-programming" jotid="wuid:gx:36555f58b1f4ef77" class="sites-navigation-link">EWPlus Controller Programming</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/eco_cool-display-module-programming" jotid="wuid:gx:1ffb50d52f706b93" class="sites-navigation-link">eco_cool Display Module Programming</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/stm32f103-minimum-system-development-board" jotid="wuid:gx:7e6a055cd16301c6" class="sites-navigation-link">STM32F103 Minimum System Development Board</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/bargain-uno-bot-project" jotid="wuid:gx:1ca584e5d826ac8e" class="sites-navigation-link">Bargain UNO Bot project</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/hd6303cpuboard" jotid="wuid:gx:3e1f193abd6fa3af" class="sites-navigation-link">HD6303 board</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/8x8x8-led-cube-kit" jotid="wuid:gx:598742425c80a05d" class="sites-navigation-link">8x8x8 LED Cube Kit</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/unoepromprogrammer" jotid="wuid:gx:34517245b632bcc8" class="sites-navigation-link">EPROM Programmer</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/uno-flash-programmer" jotid="wuid:gx:724c6be5af01f5d9" class="sites-navigation-link">UNO Flash Programmer</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/4x4x4-led-cube-kit" jotid="wuid:gx:623e602f9e887f21" class="sites-navigation-link">4x4x4 LED Cube Kit</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1/k150-pic-programmer-hack" jotid="wuid:gx:2d2c8628957aca9a" class="sites-navigation-link">K150 PIC Programmer Hack</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/projects-1" class="sites-navigation-link">More Links...</a></div></li></ul></li></ul></div></div>
<div xmlns="http://www.w3.org/1999/xhtml" id="COMP_5767606266308576" class="sites-embed" role="navigation"><h4 class="sites-embed-title">Teaching</h4><div class="sites-embed-content sites-sidebar-nav"><ul role="navigation" jotid="navList" class="has-expander"><li class="topLevel nav-first parent " wuid="gx:7c5b8fee40b09460"><div dir="ltr" style="padding-left: 0px;"><div class="expander"></div><a href="https://sites.google.com/site/ericmklaus/teaching" jotid="wuid:gx:7c5b8fee40b09460" class="sites-navigation-link topLevel">Teaching</a></div><ul role="navigation" class="has-expander"><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/teaching/intro-to-arduino-and-microcontrollers" jotid="wuid:gx:f79b8cd07b15ddc" class="sites-navigation-link">Intro To Arduino and Microcontrollers</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/teaching/arduino-next-steps-class" jotid="wuid:gx:650efa7f9e1b9cfd" class="sites-navigation-link">Arduino and Microcontrollers Next Steps Class</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/ericmklaus/teaching/intro-to-arm-microcontrollers" jotid="wuid:gx:707ee9e1e01e43bc" class="sites-navigation-link">Intro To ARM Microcontrollers</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/intro2microcontrollers/" class="sites-navigation-link" target="_blank">Intro to Microcontrollers</a></div></li><li class=""><div dir="ltr" style="padding-left: 38px;"><a href="https://sites.google.com/site/learn2programc/" class="sites-navigation-link" target="_blank">C Programming</a></div></li></ul></li><li class="topLevel "><div dir="ltr" style="padding-left: 19px;"><a href="https://sites.google.com/site/ericmklaus/system/app/pages/sitemap/hierarchy" jotid="wuid:gx:7c3f7bcfb457d454" class="sites-navigation-link topLevel">Sitemap</a></div></li><li class="topLevel "><div dir="ltr" style="padding-left: 19px;"><a href="https://sites.google.com/site/ericmklaus/system/app/pages/recentChanges" jotid="wuid:gx:11804e2ce7071ed7" class="sites-navigation-link topLevel">Recent site activity</a></div></li></ul></div></div>
<div xmlns="http://www.w3.org/1999/xhtml" id="COMP_8747509455187801" class="sites-embed" role="navigation"><h4 class="sites-embed-title">Misc...</h4><div class="sites-embed-content sites-sidebar-nav"><ul role="navigation" jotid="navList"><li class="nav-first "><div dir="ltr" style="padding-left: 5px;"><a href="https://sites.google.com/site/ericmklaus/misc/vintage-computers" jotid="wuid:gx:5ea2118eb9f53e91" class="sites-navigation-link">Vintage Computers</a></div></li></ul></div></div>
<div xmlns="http://www.w3.org/1999/xhtml" id="COMP_6587651323061436" class="sites-embed" role="navigation"><h4 class="sites-embed-title">More about me</h4><div class="sites-embed-content sites-sidebar-nav"><ul role="navigation" jotid="navList"><li class="nav-first "><div dir="ltr" style="padding-left: 5px;"><a href="https://sites.google.com/site/ericmklaus/contact" jotid="wuid:gx:2d27c05d6b7122bd" class="sites-navigation-link">Contact</a></div></li><li class=""><div dir="ltr" style="padding-left: 5px;"><a href="https://sites.google.com/site/ericmklaus/my-pictures" jotid="wuid:gx:1fd752c375e1ad1" class="sites-navigation-link">My Pictures</a></div></li><li class=""><div dir="ltr" style="padding-left: 5px;"><a href="https://sites.google.com/site/ericmklaus/activities" jotid="wuid:gx:71b7628e0576cdc3" class="sites-navigation-link">Activities, Awards &amp; Community Service</a></div></li></ul></div></div>
<div xmlns="http://www.w3.org/1999/xhtml" id="COMP_1742422936949879" class="sites-embed" role="navigation"><h4 class="sites-embed-title">Resources</h4><div class="sites-embed-content sites-sidebar-nav"><ul role="navigation" jotid="navList"><li class="nav-first "><div dir="ltr" style="padding-left: 5px;"><a href="https://sites.google.com/site/ericmklaus/links-resources" jotid="wuid:gx:724b166458ddb768" class="sites-navigation-link">Links &amp; Resources</a></div></li><li class=""><div dir="ltr" style="padding-left: 5px;"><a href="https://sites.google.com/site/ericmklaus/links-resources/file-cabinet" jotid="wuid:gx:6c214ba755f78159" class="sites-navigation-link">File cabinet</a></div></li><li class=""><div dir="ltr" style="padding-left: 5px;"><a href="https://sites.google.com/site/ericmklaus/links-resources/archives" jotid="wuid:gx:4fff4f510f047f9e" class="sites-navigation-link">Archives</a></div></li></ul></div></div>
</td>
<td id="sites-canvas-wrapper">
<div id="sites-canvas" role="main">
<div id="goog-ws-editor-toolbar-container"> </div>
<div xmlns="http://www.w3.org/1999/xhtml" id="title-crumbs" style="">
<a href="https://sites.google.com/site/ericmklaus/projects-1" dir="ltr">Projects</a>‎ &gt; ‎
  </div>
<h3 xmlns="http://www.w3.org/1999/xhtml" id="sites-page-title-header" style="" align="left">
<span id="sites-page-title" dir="ltr" tabindex="-1" style="outline: none">A Flash Programmer for the CC2510</span>
</h3>
<div id="sites-canvas-main" class="sites-canvas-main">
<div id="sites-canvas-main-content">
<table xmlns="http://www.w3.org/1999/xhtml" cellspacing="0" class="sites-layout-name-one-column sites-layout-hbox"><tbody><tr><td class="sites-layout-tile sites-tile-name-content-1"><div dir="ltr"><div style="display:block"><span style="line-height:1.5"><font color="#38761d" size="4" style="font-family:Georgia;background-color:transparent">An Arduino Uno Based Flash Programmer for the CC2510 System-on-a-Chip (SOC)&nbsp;<br></font><br></span></div><div style="display:block"><span style="line-height:1.5">Early in 2018 a friend gifted me with a box of parts that included several CC2510 modules and a  TI SmartRF 04DK Development Kit.&nbsp;</span></div><div style="display:block"><span style="line-height:1.5">Sadly when I powered up the dev board it didn’t respond at all when plugged into the USB port of my PC I found some driver</span></div><div style="display:block"><span style="line-height:1.5">software but that made no difference. Then I noticed the little paper tag attached to the bottom that read “Dead”. <br>Some of the other modules seemed OK but without a way to program them I was out of luck.  <br><span style="color:rgb(0,0,0);font-family:Lucida Grande,Lucida Sans Unicode,sans-serif;font-size:13.3333px">(click for larger image)&nbsp;&nbsp;</span></span></div><div style="display:block;text-align:left"><span style="font-family:Georgia;line-height:1.5;background-color:transparent"><span style="background-color:transparent;color:rgb(0,0,0);font-family:Lucida Grande,Lucida Sans Unicode,sans-serif;font-size:10pt"><div style="display:inline;float:left;margin:5px 10px 0px 0px"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/CC2510EM_1.jpg?attredirects=0" imageanchor="1"><img border="0" height="178" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/CC2510EM_1.jpg" width="200"></a></div></span></span></div>&nbsp;The collection of stuff sat by my desk for another month until I ran out of projects.&nbsp;<div>I located a library for creating a CC2510 programmer with an Arduino&nbsp;</div><div>(<a href="https://github.com/wavesoft/CCLib" rel="nofollow">https://github.com/wavesoft/CCLib</a>) but it required a Python frontend and didn’t work for me&nbsp;</div><div>when I tried it. (Probably my fault)&nbsp; So using the library code as a guide along with a Debug&nbsp;</div><div>and Programming Interface Specification document I found, I began trying to communicate with</div><div>these chips. Communicating with the chip in debug mode was pretty straightforward and soon I&nbsp;</div><div>was able to read the chip ID and examine and update memory but programming a single byte of flash seemed to allude me. The examples in the documentation and used by the library code both relied on programming an entire page of flash memory but I knew I only wanted to program 16 bytes at a time</div><div>&nbsp;(the size of a standard .hex file record). The spec sheet indicated I should be able to program a&nbsp;</div><div>word, (2 bytes) of flash, by loading the address into FADDRH:FADDRL, setting a flag (FCTL.WRITE) then loading the data with two</div><div>consecutive writes to the “Flash Write Data Register”(FWDATA).  This seemingly simple process had me stumped until I noticed this</div><div>in the spec.&nbsp; <i>“Note that there exist a timeout period of 40us for writing one flash word to FWDATA” </i><br> So since each individual instruction executed through the debug interface must be transmitted serially, there’s no way to send&nbsp;</div><div>the instructions that set the flag and the two bytes of data within that 40us time frame.<br> This explained why the method recommended in the documentation involved uploading a small machine language program to the&nbsp;</div><div>chip's ram, uploading the page of data, and then sending the commands to execute the uploaded program which in turn would&nbsp;</div><div>program the flash.  Once I figured this out I was able to slightly modify the program to program only the 16 bytes I wanted&nbsp;</div><div>(it will actually support up to 256 bytes but I’m fine with 16).    <br><br>Once past that roadblock I kept looking at all the cool stuff on the (dead) development board (LCD, LEDs buttons, a joystick…).&nbsp;</div><div>I traced out some signals and found the Silabs USB controller chip to be dead. So I removed it from the board and added a couple of jumpers around signals it re-directed.  Then I added a connector that would interface to my programmer in the same way it connected to the individual modules I had.  Now I had access to all the goodies on the development board and I could program the chips without</div><div>removing the modules from the board. <br><br>So far I’ve just worked with the 8051 MCU on the chip and not the radio components.&nbsp;</div><div>Maybe when I once again run out of interesting projects I’ll take a look at that stuff…)</div><div><br></div><div>The code for this project as well as some datasheets are posted below.<br><div style="display:block;text-align:left"><br></div><div><div><span style="background-color:transparent;line-height:16px"><br></span></div><div>Click on the images for a larger view</div><div><span style="background-color:transparent;line-height:16px"><table border="1" bordercolor="#888" cellspacing="0" style="border-collapse:collapse;border-color:rgb(136,136,136);border-width:1px"><tbody><tr><td style="width:60px">&nbsp;<br><div style="display:block;text-align:left">The Module in my homemade carrier.</div><div style="display:block;text-align:left"><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/CC2510EM_In_Carrier.jpg?attredirects=0" imageanchor="1"><img border="0" height="200" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/CC2510EM_In_Carrier.jpg" width="131"></a></div><br></div><div style="display:block;text-align:left"><br></div></td><td style="width:60px">&nbsp;<div style="display:block;text-align:left">&nbsp;The carrier I made because I didn't have the proper connectors for this module.&nbsp;</div><div style="display:block;text-align:left"><br></div><div style="display:block;text-align:left"><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/HomeBrewCarrier1.jpg?attredirects=0" imageanchor="1"><img border="0" height="200" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/HomeBrewCarrier1.jpg" width="188"></a></div><br></div><div style="display:block;text-align:left"></div></td><td style="width:60px"><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><br></div><div style="display:block;text-align:center;margin-right:auto;margin-left:auto">Bottom of the carrier (ugh...)</div><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/HomeBrewCarrier2.jpg?attredirects=0" imageanchor="1"><img border="0" height="200" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/HomeBrewCarrier2.jpg" width="165"></a></div><br></div><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><br></div><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"></div></td></tr><tr><td>&nbsp; &nbsp; &nbsp; TI SmartRF 04DK <br>&nbsp; &nbsp;Development board<div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/SmartRF04EB_1.jpg?attredirects=0" imageanchor="1"><img border="0" height="187" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/SmartRF04EB_1.jpg" width="200"></a></div><br><br></td><td><br><div style="text-align:center"><span style="background-color:transparent;font-size:10pt">Development board&nbsp;</span><span style="background-color:transparent;font-size:10pt">connected</span></div><div style="text-align:center"><span style="background-color:transparent;font-size:10pt">to</span><span style="background-color:transparent;font-size:10pt">&nbsp;the programmer&nbsp;</span></div><br><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/SmartRF04EB_2.jpg?attredirects=0" imageanchor="1"><img border="0" height="200" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/SmartRF04EB_2.jpg" width="150"></a></div><br></td><td>&nbsp;The box also had a few of these custom boards.<br><br><div style="display:block;text-align:center;margin-right:auto;margin-left:auto"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/IMS_CC2510_Brd.jpg?attredirects=0" imageanchor="1"><img border="0" height="200" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/IMS_CC2510_Brd.jpg" width="183"></a></div><br></td></tr></tbody></table><br></span></div><div><span style="background-color:transparent;line-height:16px"><br></span></div><div>Here's a link to the CC2510 datasheet:&nbsp;<span style="background-color:transparent;font-size:10pt">&nbsp; &nbsp;</span><span style="background-color:transparent;color:rgb(0,102,33);font-family:Roboto,arial,sans-serif;font-size:14px;white-space:nowrap"><a href="http://www.ti.com/lit/er/swrz014d/swrz014d.pdf" rel="nofollow">www.ti.com/lit/er/swrz014d/swrz014d.pdf</a></span></div><div><span style="background-color:transparent;line-height:16px">&nbsp; and the Debug and Programming Interface:&nbsp;&nbsp;</span><span style="color:rgb(0,102,33);font-family:Roboto,arial,sans-serif;font-size:14px;white-space:nowrap;background-color:transparent"><a href="http://www.ti.com/lit/ug/swra124/swra124.pdf" rel="nofollow">www.ti.com/lit/ug/swra124/swra124.pdf</a></span></div><div><br></div><div>&nbsp; SDCC compiler will work with CC2010:&nbsp; <a href="http://sdcc.sourceforge.net/" rel="nofollow">http://sdcc.sourceforge.net/</a>&nbsp;</div><div><span style="background-color:transparent;line-height:16px"><br></span></div><div><span style="background-color:transparent;line-height:16px"><b>Attachments Details:</b></span></div><div><span style="background-color:transparent;line-height:16px">&nbsp; CCDebug.zip&nbsp; &nbsp;Source code for the programmer <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(Note intended for compiling with WinAVR not the Arduino IDE.&nbsp; Modify <font face="courier new, monospace"><b>AVRDUDE_PORT</b></font> to match your Uno <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COM port value and then just enter MAKE program to compile &amp; upload)</span></div><div><br></div></div><div>&nbsp;CCpgmr.zip&nbsp; &nbsp; &nbsp;Source, executable and CodeBlocks project for the PC utility that uploads .hex file to the programmer.</div><div><br></div><div>&nbsp; blink1.zip&nbsp; &nbsp; &nbsp; &nbsp;Source and .hex for simple CC2510 test program that increments the low 4 bits of P1.<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this archive also contains source and .exe for modified packihex.exe. (Replace the one that ships with SDCC)</div><div><br></div><div><span><span><span><br></span></span></span></div></div></div></td></tr></tbody></table>
</div> 
</div> 
<div id="sites-canvas-bottom-panel">
<div xmlns="http://www.w3.org/1999/xhtml" id="COMP_page-subpages"> </div>
<div id="sites-attachments-container">
<div xmlns="http://www.w3.org/1999/xhtml" id="sites-attachments">
<div class="sites-attachments-row"><div class="sites-attachments-icon" style="left:0px;"><span aria-label="Attachments" title="Attachments"><div class="sites-translucent sites-symbol" aria-hidden="true">Č</div></span></div><div id="sites-attachments-update-div" class="sites-attachments-inner-div" style="display:none;"><span class="sites-attachments-update-icon"><img src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/spinner.gif"></span><div class="sites-attachments-update-text">Updating...</div></div></div><div class="sites-attachments-separator"></div>
<div id="attachment-wuid:gx:160192bece00fa6d"><div class="sites-attachments-row"><div class="sites-attachments-icon sites-attachments-icon-accessible" style="left:5px"><div class="sites-translucent sites-symbol" aria-label="File" title="File">ċ</div></div><div class="sites-attachments-inner-div"><div class="sites-attachments-name">CCDebug.zip <div class="sites-translucent">(15k)</div></div><div class="sites-attachments-author">Eric Klaus, <div class="sites-translucent">Jun 6, 2018, 12:41 PM</div></div></div><div class="sites-attachments-version sites-attachments-version-accessible"><a href="https://sites.google.com/site/ericmklaus/system/app/pages/admin/revisions?wuid=wuid:gx:160192bece00fa6d">v.1</a></div><div id="attachment-download-wuid:gx:160192bece00fa6d" class="sites-attachments-icon sites-attachments-icon-accessible" style="right:0px"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/CCDebug.zip?attredirects=0&amp;d=1" aria-label="Download CCDebug.zip" title="Download" role="button" target="_blank" rel="noopener noreferrer"><span class="sites-symbol" aria-hidden="true">ď</span></a></div></div><div class="sites-attachments-separator"></div></div>
<div id="attachment-wuid:gx:7f608d97df7c8455"><div class="sites-attachments-row"><div class="sites-attachments-icon sites-attachments-icon-accessible" style="left:5px"><div class="sites-translucent sites-symbol" aria-label="File" title="File">ċ</div></div><div class="sites-attachments-inner-div"><div class="sites-attachments-name">CCpgmr.zip <div class="sites-translucent">(11k)</div></div><div class="sites-attachments-author">Eric Klaus, <div class="sites-translucent">Jun 6, 2018, 4:51 PM</div></div></div><div class="sites-attachments-version sites-attachments-version-accessible"><a href="https://sites.google.com/site/ericmklaus/system/app/pages/admin/revisions?wuid=wuid:gx:7f608d97df7c8455">v.1</a></div><div id="attachment-download-wuid:gx:7f608d97df7c8455" class="sites-attachments-icon sites-attachments-icon-accessible" style="right:0px"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/CCpgmr.zip?attredirects=0&amp;d=1" aria-label="Download CCpgmr.zip" title="Download" role="button" target="_blank" rel="noopener noreferrer"><span class="sites-symbol" aria-hidden="true">ď</span></a></div></div><div class="sites-attachments-separator"></div></div>
<div id="attachment-wuid:gx:682184d34e730c53"><div class="sites-attachments-row"><div class="sites-attachments-icon sites-attachments-icon-accessible" style="left:5px"><div class="sites-translucent sites-symbol" aria-label="File" title="File">ċ</div></div><div class="sites-attachments-inner-div"><div class="sites-attachments-name">blink1.zip <div class="sites-translucent">(10k)</div></div><div class="sites-attachments-author">Eric Klaus, <div class="sites-translucent">Jun 6, 2018, 4:42 PM</div></div></div><div class="sites-attachments-version sites-attachments-version-accessible"><a href="https://sites.google.com/site/ericmklaus/system/app/pages/admin/revisions?wuid=wuid:gx:682184d34e730c53">v.1</a></div><div id="attachment-download-wuid:gx:682184d34e730c53" class="sites-attachments-icon sites-attachments-icon-accessible" style="right:0px"><a href="https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510/blink1.zip?attredirects=0&amp;d=1" aria-label="Download blink1.zip" title="Download" role="button" target="_blank" rel="noopener noreferrer"><span class="sites-symbol" aria-hidden="true">ď</span></a></div></div><div class="sites-attachments-separator"></div></div>
<div style="height: 10px"></div>
</div>
</div>
</div>
</div> 
</td> 
</tr>
</tbody></table> 
</div> 
</div> 
<div id="sites-chrome-footer-wrapper">
<div id="sites-chrome-footer-wrapper-inside">
<div id="sites-chrome-footer">
<div xmlns="http://www.w3.org/1999/xhtml" class="sites-subfooter"><div class="sites-subfooter-content"><br></div></div>
</div>
</div>
</div>
</div> 
</div> 
<div id="sites-chrome-adminfooter-container">
<div xmlns="http://www.w3.org/1999/xhtml" class="sites-adminfooter" role="navigation"><p><a class="sites-system-link" href="https://accounts.google.com/AddSession?continue=https://sites.google.com/site/ericmklaus/projects-1/a-flash-programmer-for-the-cc2510&amp;service=jotspot">Sign in</a><span aria-hidden="true">|</span><a class="sites-system-link" href="https://sites.google.com/site/ericmklaus/system/app/pages/recentChanges">Recent Site Activity</a><span aria-hidden="true">|</span><a class="sites-system-link" href="https://sites.google.com/site/ericmklaus/system/app/pages/reportAbuse" target="_blank">Report Abuse</a><span aria-hidden="true">|</span><a class="sites-system-link" href="javascript:;" onclick="window.open(webspace.printUrl)">Print Page</a><span aria-hidden="true">|</span><span class="sites-system-link">Powered By</span> <b class="powered-by"><a href="http://sites.google.com/site">Google Sites</a></b></p></div>
</div>
</div> 
</div> 
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
    window.jstiming.load.tick('sjl');
  </script>
<script xmlns="http://www.w3.org/1999/xhtml" src="./A Flash Programmer for the CC2510 - Eric M. Klaus_files/jot_min_view__en.js.download"></script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
    window.jstiming.load.tick('jl');
  </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
                    sites.Searchbox.initialize(
                        'sites-searchbox-search-button',
                        {"object":[]}['object'],
                        'search-site',
                        {"label":"Configure search options...","url":"/site/ericmklaus/system/app/pages/admin/settings"});
                  </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
      gsites.HoverPopupMenu.createSiteDropdownMenus('sites-header-nav-dropdown', false);
    </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript" defer="true">
            JOT_setupNav("3350227752234787", "Projects", false);
            JOT_addListener('titleChange', 'JOT_NAVIGATION_titleChange', 'COMP_3350227752234787');
          </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript" defer="true">
            JOT_setupNav("5767606266308576", "Teaching", false);
            JOT_addListener('titleChange', 'JOT_NAVIGATION_titleChange', 'COMP_5767606266308576');
          </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript" defer="true">
            JOT_setupNav("8747509455187801", "Misc...", false);
            JOT_addListener('titleChange', 'JOT_NAVIGATION_titleChange', 'COMP_8747509455187801');
          </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript" defer="true">
            JOT_setupNav("6587651323061436", "More about me", false);
            JOT_addListener('titleChange', 'JOT_NAVIGATION_titleChange', 'COMP_6587651323061436');
          </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript" defer="true">
            JOT_setupNav("1742422936949879", "Resources", false);
            JOT_addListener('titleChange', 'JOT_NAVIGATION_titleChange', 'COMP_1742422936949879');
          </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
  setTimeout(function() {
    var fingerprint = gsites.date.TimeZone.getFingerprint([1109635200000, 1128902400000, 1130657000000, 1143333000000, 1143806400000, 1145000000000, 1146380000000, 1152489600000, 1159800000000, 1159500000000, 1162095000000, 1162075000000, 1162105500000]);
    gsites.Xhr.send('https://sites.google.com/site/ericmklaus/_/tz', null, null, 'GET', null, null, { afjstz: fingerprint });
  }, 500);
</script>
<script xmlns="http://www.w3.org/1999/xhtml">
                    window.onload = function() {
                      if (false) {
                        JOT_setMobilePreview();
                      }
                      var loadTimer = window.jstiming.load;
                      loadTimer.tick("ol");
                      loadTimer["name"] = "load," + webspace.page.type + ",user_page";
                      window.jstiming.report(loadTimer, {}, 'https://gg.google.com/csi');
                    }
                  </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
        JOT_insertAnalyticsCode(false,
            false);
      </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
    var maestroRunner = new gsites.pages.view.SitesMaestroRunner(
        webspace, "en");
    maestroRunner.initListeners();
    maestroRunner.installEditRender();
  </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript" defer="true">
  //<![CDATA[
    // Decorate any fastUI buttons on the page with a class of 'goog-button'.
    if (webspace.user.hasWriteAccess) {
      JOT_decorateButtons();
    }

    // Fires delayed events.
    (function() {
      JOT_fullyLoaded = true;
      var delayedEvents = JOT_delayedEvents;
      for (var x = 0; x < delayedEvents.length; x++) {
        var event = delayedEvents[x];
        JOT_postEvent(event.eventName, event.eventSrc, event.payload);
      }
      JOT_delayedEvents = null;
      JOT_postEvent('pageLoaded');
    })();
  //]]>
</script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
    JOT_postEvent('decorateGvizCharts');
  </script>
<script type="text/javascript">
          JOT_setupPostRenderingManager();
        </script>
<script type="text/javascript">
          JOT_postEvent('renderPlus', null, 'sites-chrome-main');
        </script>
<script type="text/javascript">
          sites.codeembed.init();
        </script>
<div id="server-timer-div" style="display:none"> </div>
<script type="text/javascript">
          window.jstiming.load.tick('render');
          JOT_postEvent('usercontentrendered', this);
        </script>


</body></html>